package leetcode.editor.cn;

//给你一个链表的头节点 head 和一个整数 val ，请你删除链表中所有满足 Node.val == val 的节点，并返回 新的头节点 。
//
// 
//
// 示例 1： 
// 
// 
//输入：head = [1,2,6,3,4,5,6], val = 6
//输出：[1,2,3,4,5]
// 
//
// 示例 2： 
//
// 
//输入：head = [], val = 1
//输出：[]
// 
//
// 示例 3： 
//
// 
//输入：head = [7,7,7,7], val = 7
//输出：[]
// 
//
// 
//
// 提示： 
//
// 
// 列表中的节点数目在范围 [0, 10⁴] 内 
// 1 <= Node.val <= 50 
// 0 <= val <= 50 
// 
//
// Related Topics 递归 链表 👍 1137 👎 0

class RemoveLinkedListElements {
    public static void main(String[] args) {

        Solution solution = new RemoveLinkedListElements().new Solution();

    }

//    leetcode submit region begin(Prohibit modification and deletion)

//    public class ListNode {
//        int val;
//        ListNode next;
//
//        ListNode() {
//        }
//
//        ListNode(int val) {
//            this.val = val;
//        }
//
//        ListNode(int val, ListNode next) {
//            this.val = val;
//            this.next = next;
//        }
//    }

    class Solution {
        public ListNode removeElements(ListNode head, int val) {
            /*
             * 设置一个链表指针pre
             * 遍历节点，循环条件为pre.next不为空
             * 当pre。next，val==val的时候
             *删除
             * */
            if (head!=null&&head.val==val){
                head=head.next;
            }
            ListNode pre=head;
            if (pre!=null) {
                while(pre!=null){
                    if(pre.next.val==val){
                        pre.next=pre.next.next;
                    }
                    pre=pre.next;
                }
            }
            return head;

        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}
